﻿namespace est8
{
    internal class class8
    {
    #region     知识点一   函数语法复习
    //  1       2    3              4
    //static void 函数名(参数类型 参数1,参数类型 参数2.......)
    //{
    //      5
    //  return 返回值;
    //}
    //1.静态关键词 可选，目前对于我们来说必须写
    //2.返回值 没有返回值填void 可以填写任意类型的变量
    //3.函数名 帕斯卡命名法
    //4.参数可以是0到n个 前面可以加 ref和out 用来传递想要在函数内部改变内容的变量
    //5.如果返回值不是void 那么必须有return对应类型的内容 return可以打断函数语句中的逻辑 直接停止后面的逻辑
    #endregion

    #region     知识点二   变长参数关键词
    // 举例  函数要计算n个整数的和
    //变长参数关键字 params
        static int Sum(params int[] arr)
        {
            int sum = 0;
            for (int i = 0; i < arr.Length; i++)
            {
                sum += arr[i];
            }
            return sum;
        }
        //params int[] 意味着可以传入n个int参数 n可以等于0 传入的参数会存在arr数组中
        //注意：
        //1.params int[]关键字后面必为数组
        //2.数组的类型可以是任意类型

        //3.函数参数可以有 别的参数和params关键字修饰的参数
        //4.函数参数中只能最多出现一个params关键字 并且一定是在最后一组参数 前面可以有n个其他参数
        #endregion
        #region     知识点三   参数默认值
        //有参数默认值的参数  每个参数都可以有默认值
        //作用是 当调用函数时可以不传入参数 不传就会使用默认值作为参数的值
        static void Speak(string str = "你说啥")
        {
            Console.WriteLine(str);
        }
        //注意：
        //1.支持多参数默认值 每个参数都可以有默认值
        //2.如果要混用 可选参数 必须写在普通参数后面！！！！！！
        #endregion

        #region     作业
        //1.使用param参数，求多个数字的和以及平均数
        static void Num(params int[] arr2)
        {
            int sum2 = 0;
            for (int i = 0;i < arr2.Length;i++)
            {
                sum2 += arr2[i];
            }
            int jieGuo = sum2 / arr2.Length;
            Console.WriteLine("和为{0}，平均数为{1}",sum2,jieGuo);
        }

        //2.使用param参数，求多个数字的偶数和奇数和
        static void Num2(params int[] arr3)
        {
            int sum3 = 0;
            int sum4 = 0;
            for(int i = 0;i<arr3.Length ; i++)
            {
                if (arr3[i] % 2 == 0)
                {
                    sum3 += arr3[i];
                }
                else
                {
                    sum4 += arr3[i];
                }
            }
            Console.WriteLine("偶数和为{0}，奇数和为{1}",sum3,sum4);
        }
        #endregion

        static void Main(string[] args)
        {
            Console.WriteLine("变长参数和参数默认值");
            Sum(4,4,4,4,4,4,4,4,4,4,4,78);

            Speak();//空的就传默认值
            Speak("wahhhhh");//有参数就传参数

            //1.
            Num(2,54,66,88,99,12,453);//这里的平均数是取整后的结果

            //2.
            Num2(12,23,44,55,342,66,745);
        }
    }
}
